570 INVERSE : VTAB 23: HTAB 2: PRINT " PRESS ANY KEY TO CONTINUE ";: POKE -16368,0: WAIT -16384,128: NORMAL : HOME :FR = FRE(0): RETURN
580 REM INSTRUCTIONS:
590 VTAB 5: HTAB 5
600 PRINT "THIS PROGRAM ALLOWS YOU TO GRAPH": PRINT : PRINT "FUNCTIONS OF THE FORM": VTAB 10: HTAB 8: PRINT "F(X) = A SIN B (THETA + C) +D,"
610 VTAB 13: PRINT "WHERE A, B, C, & D ARE INPUT BY YOU, AND": PRINT "SIN MAY BE REPLACED BY": VTAB 18: HTAB 8: PRINT "COS, TAN, COTAN, SEC, OR COSEC": GOSUB 570
620 VTAB 2: INVERSE : HTAB 14: PRINT " MISCELLANIA ": NORMAL : VTAB 6: PRINT "A 'STANDARD' CURVE WILL BE PRODUCED WHEN": PRINT "A=1, B=1, C=0, AND D=0."
630 PRINT : PRINT : PRINT "(WHEN INPUTTING VALUES, SIMPLY PRESSING <RETURN> IS EQUIVALENT TO TYPING '0'. )";
640 PRINT : PRINT "(WHEN INPUTTING A, B, C, & D, YOU MAY": PRINT " TYPE 'P' FOR PI, I.E. 1P, 2P, -3P/2)"
1200 FOR X = -2 *PI TO 2 *PI STEP ST:FX = INT( FN R(X) *ML +AD): IF FX < = MX AND FX > = MN THEN XDRAW 12 AT P,FX
1210 IF FX = M2 THEN XDRAW 12 AT P,MX
1220 P = P +M1: NEXT
1230 REM
1240 FR = FRE(0): POKE 34,23: POKE 35,24: HOME : PRINT "DO YOU WANT ANOTHER GRAPH OVERPRINTED? ";: POKE -16368,0: GET A$: IF A$ = "Y" THEN 690
1250 IF A$ < >"N" THEN 1240
1260 GOTO 680
1270 REM
1280 REM -- INPUT ANALYZER.
1290 REM -- ANALYZES NUMERIC
1300 REM -- INPUT, CONVERTING
1310 REM -- "P" TO PI, AND
1320 REM -- COMPUTING FRAC-
1330 REM -- TIONS, I.E.,
1340 REM -- "3P/2" BECOMES
1350 REM -- (3*3.1415927)/2
1360 REM -- = 4.712389
1370 A1 = LEN(A$):B1 = LEN(B$):C1 = LEN(C$):D1 = LEN(D$):A = VAL(A$):B = VAL(B$):C = VAL(C$):D = VAL(D$): FOR X = 1 TO A1: IF MID$ (A$,X,1) = "P" THEN A = VAL( LEFT$(A$,X -1)) *PI: IF A = 0 THEN A = PI
1380 NEXT
1390 FOR X = 1 TO A1: IF MID$ (A$,X,1) = "/" THEN A = A/ VAL( RIGHT$(A$,A1 -X))
1400 NEXT
1410 FOR X = 1 TO B1: IF MID$ (B$,X,1) = "P" THEN B = VAL( LEFT$(B$,X -1)) *PI: IF B = 0 THEN B = PI
1420 NEXT
1430 FOR X = 1 TO B1: IF MID$ (B$,X,1) = "/" THEN B = B/ VAL( RIGHT$(B$,B1 -X))
1440 NEXT
1450 FOR X = 1 TO C1: IF MID$ (C$,X,1) = "P" THEN C = VAL( LEFT$(C$,X -1)) *PI: IF C = 0 THEN C = PI
1460 NEXT
1470 FOR X = 1 TO C1: IF MID$ (C$,X,1) = "/" THEN C = C/ VAL( RIGHT$(C$,C1 -X))
1480 NEXT
1490 FOR X = 1 TO D1: IF MID$ (D$,X,1) = "P" THEN D = VAL( LEFT$(D$,X -1)) *PI: IF D = 0 THEN D = PI
1500 NEXT
1510 FOR X = 1 TO D1: IF MID$ (D$,X,1) = "/" THEN D = D/ VAL( RIGHT$(D$,D1 -X))
1590 Y = PEEK(222): IF Y = 133 THEN 1220: REM -- DIVIDE BY ZERO
1600 IF Y = 0 THEN 1240: REM -- NEXT WITHOUT FOR
1610 IF Y = 254 OR Y = 255 THEN PRINT CHR$(7);: RESUME : REM -- BAD INPUT OR CTRL-C
1620 TEXT : HOME : PRINT CHR$(7);"ERROR #";Y; CHR$(7);" IN LINE "; PEEK(218) +256 * PEEK(219): END
1630 :
1640 REM SHAPE TABLE MAKER:
1650 M = L: FOR X = 1 TO 3: READ B$: FOR I = 1 TO LEN(B$) STEP 2:AD = ASC( MID$ (B$,I,1)) -48: IF AD >9 THEN AD = AD -7
1660 CH = ASC( MID$ (B$,I +1,1)) -48: IF CH >9 THEN CH = CH -7
1670 POKE M,AD *16 +CH:M = M +1: NEXT : NEXT : RETURN
1680 DATA "0F00200025002F003B0044004F0057005D00690073007C00850087008D009B0009363606002D2D363F3F362D2D05002D2D363F3F5749313F3F0700362D2D248C9233060049393F372E2D353E3F3F0036362D2D243F3F002D2D363606002D2D363F3FE492
1690 DATA "312D2D240049123F272C2D353636002D2D36361ED82424002D2D36363F3F24240006002D363F2C05002D2D3E3F372D2D3E3F372D2D050000434C3E3F3F3F3F0700242424242424242D2D2D2D2D2D2E2E363E3E3635353637373F3F3F3F3F3F41282D2D2D
1700 DATA "2D2C3C3C3C3F3F3F37364640C0282D2D2D2C2C3C3C3F3F3F3F36360500092D2D2D2D2D2C2C243F3E3E3F3F3F27272424242C2C2D2D2D35352D2427273F3F3F3F3F3E3E36363636363535002D2D2D2D2D2D2C2C242424242427273F3F3F3F3F3F36363636